package com.coolt.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.google.gwt.user.client.rpc.IsSerializable;

@Entity
@Table(name = "cotacao")
public class Cotacao implements IsSerializable {

	public static final int ORDEM_DATA = 0;
	public static final int ORDEM_NOTA = 1;
	public static final int ORDEM_TITULO = 2;

	@Embeddable
	public static class Id implements Serializable {

		private static final long serialVersionUID = 1L;

		@Column
		private Long cditem;

		@Column
		private Long cdusuario;

		public Long getCdusuario() {
			return cdusuario;
		}

		public Long getCditem() {
			return cditem;
		}

		public void setCditem(Long cditem) {
			this.cditem = cditem;
		}

		public void setCdusuario(Long cdusuario) {
			this.cdusuario = cdusuario;
		}

		@Override
		public boolean equals(Object arg0) {

			if (arg0 instanceof Id) {
				Id that = (Id) arg0;
				return this.cditem.equals(that.cditem)
						&& this.cdusuario.equals(that.cdusuario);
			}
			return false;
		}

		@Override
		public int hashCode() {
			return cditem.hashCode() + cdusuario.hashCode();
		}
	}

	@EmbeddedId
	private Id id;

	@ManyToOne
	@JoinColumn(name = "cdusuario", updatable = false, insertable = false)
	private Usuario usuario;

	@ManyToOne(optional = false)
	@JoinColumn(name = "cditem", updatable = false, insertable = false)
	private Item item;

	private String nota;

	private Date dtcadastro;

	public Id getId() {
		return id;
	}

	public void setId(Id id) {
		this.id = id;
	}

	public Item getItem() {
		return item;
	}

	public void setItem(Item item) {
		this.item = item;
	}

	public String getNota() {
		return nota;
	}

	public void setNota(String nota) {
		this.nota = nota;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Date getDtcadastro() {
		return dtcadastro;
	}

	public void setDtcadastro(Date dtcadastro) {
		this.dtcadastro = dtcadastro;
	}

}
